using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using Magiq.Behaviors;

namespace Magiq.Update
{
    public interface IUpdate<T> : IBehaviorBasedExecution
    {
        IEnumerable<IPropertySet> PropertySets { get; }
        IQueryable<T> Source { get; }
        IUpdate<T> Set<TReturn>(Expression<Func<T,TReturn>> property, TReturn value);
        IUpdate<T> Set<TReturn>(Expression<Func<T, TReturn>> property, Expression<Func<T, TReturn>> value);
        int Update();
    }
}